package com.alibaba.chaosblade.box.toolsmgr.ansible.command;

import com.alibaba.chaosblade.box.toolsmgr.ansible.AnsibleCommand;
import com.alibaba.chaosblade.box.toolsmgr.ansible.AnsibleConstants;
import com.alibaba.chaosblade.box.toolsmgr.model.MgrRequest;

import java.util.List;

/**
 * @author: xinyuan.ymm
 * @create: 2022-01-07 9:41 PM
 */
public class AnsibleListAllHostsCommand implements AnsibleCommand, AnsibleConstants {

    /**
     * 根据管理请求生成Ansible列表所有主机命令
     *
     * @param mgrRequest 管理请求对象，包含目标主机IP、用户名等信息
     * @return 生成的Ansible列表所有主机命令字符串
     */
    @Override
    public String getCommand(MgrRequest mgrRequest) {
        return "ansible all --list-hosts";
    }

    /**
     * 判断Ansible列表所有主机命令执行结果是否成功
     *
     * @param result                  命令执行结果列表
     * @param ignoreBackgroundTimeout 是否忽略后台超时（此参数在当前实现中未使用）
     * @return 如果执行结果包含"hosts"关键字则返回true，否则返回false
     */
    @Override
    public boolean resultPredicate(List<String> result, boolean ignoreBackgroundTimeout) {
        if (result.size() > 0 && result.stream().findFirst().get().contains("hosts")) {
            return true;
        }
        return false;
    }
}
